// screen_util.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';

class ScreenUtil extends GetxController {
  static ScreenUtil get instance => Get.find<ScreenUtil>();

  // 设计稿基准尺寸（默认 iPhone 13）
  double designWidth = 390.0;
  double designHeight = 844.0;

  // 当前屏幕方向
  Orientation get orientation => Get.mediaQuery.orientation;

  // 初始化配置（在main函数中调用）
  static void init({double? width, double? height}) {
    if (!Get.isRegistered<ScreenUtil>()) {
      Get.put(ScreenUtil());
    }
    final util = Get.find<ScreenUtil>();
    util.designWidth = width ?? util.designWidth;
    util.designHeight = height ?? util.designHeight;
  }

  // 获取屏幕宽高
  double get screenWidth => Get.mediaQuery.size.width;

  double get screenHeight => Get.mediaQuery.size.height;

  // 宽度适配（根据设计稿宽度比例）
  double width(num width) {
    return (width * screenWidth) / designWidth;
  }

  // 高度适配（根据设计稿高度比例）
  double height(num height) {
    return (height * screenHeight) / designHeight;
  }

  // 字体适配（推荐使用高度比例）
  double fontSize(num fontSize) {
    return (fontSize * screenHeight) / designHeight;
  }

  // 横竖屏适配（智能选择基准）
  double adaptive(double size) {
    return orientation == Orientation.portrait ? width(size) : height(size);
  }

  // 设备像素密度
  double get pixelRatio => Get.mediaQuery.devicePixelRatio;
}
